package sort;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2023-01-03
 * Time: 22:23
 */
//选择排序
public class SelectionSort {
    public static void selectionSort(int[] arr){
        if(arr.length<2 || arr==null){
            return;
        }
        int minIndex=-1;
        //从0~n-1中选出最小的，放在已经有序的数后面
        for(int i=0;i<arr.length-1;i++){   //i<arr.length-1防止下面的j=i+1越界
            //令当前位置为最小的数
            minIndex=i;
            for(int j=i+1;j<arr.length;j++){
                //从当前位置的后一个位置开始找更小的数
                minIndex=arr[j]<arr[minIndex] ? j: minIndex;
            }
            //让最小值和当前位置的值交换，就可以确定当前位置就是最小值
            swap(arr,i,minIndex);
        }
        //打印
        printArr(arr);
    }
    public static void swap(int[] arr,int l,int r){
        int tmp=arr[l];
        arr[l]=arr[r];
        arr[r]=tmp;
    }
    public static void printArr(int[] arr){
        for (int i = 0; i <arr.length ; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    public static void main(String[] args) {
        int[] arr={-1,7,2,4,3,10,8};
        selectionSort(arr);
    }
}
